package com.demo.money.dao;

import com.demo.money.model.Incomedetails;
import com.demo.money.kit.example.IncomedetailsExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IncomedetailsDao {
    long countByExample(IncomedetailsExample example);

    int deleteByExample(IncomedetailsExample example);

    int insertSelective(Incomedetails record);

    int updateByExampleSelective(@Param("record") Incomedetails record, @Param("example") IncomedetailsExample example);

    int updateByExample(@Param("record") Incomedetails record, @Param("example") IncomedetailsExample example);

    int updateByPrimaryKey(Incomedetails record);

    /**
     * 查询收入信息
     *
     * @param id 主键
     * @return 查询结果
     */
    Incomedetails selectByPrimaryKey(Integer id);

    /**
     * 更新收入信息
     *
     * @param record 待更新的收入信息
     * @return 更新结果
     */
    int updateByPrimaryKeySelective(Incomedetails record);

    /**
     * 删除一条收入信息
     *
     * @param id 主键
     * @return 删除结果
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 添加收入信息
     *
     * @param record 待添加的收入信息
     * @return 添加结果
     */
    int insert(Incomedetails record);


    /**
     * 综合查询
     *
     * @param example 查询条件
     * @return 查询结果
     */
    List<Incomedetails> selectByExample(IncomedetailsExample example);

    /**
     * 综合查询
     *
     * @param userId     用户id - 等于
     * @param startTime  起始时间 - 大等于
     * @param endTime    结束时间 - 小等于
     * @param startMoney 最小金额 - 大等于
     * @param endMoney   最大金额 - 小等于
     * @param largeclass 收入来源 - 等于
     * @param subclass   收入原因 - LIKE
     * @param note       备注 - LIKE
     * @return 查询结果
     */
    List<Incomedetails> selectByZhongHe(@Param(value = "userId") String userId, @Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime, @Param(value = "startMoney") String startMoney, @Param(value = "endMoney") String endMoney, @Param(value = "largeclass") String largeclass, @Param(value = "subclass") String subclass, @Param(value = "note") String note);


}